#include <cstdint>
#include <cstdio>
#include <iostream>
#include <istream>
using ll = int64_t;
using int128=__int128;
const ll maxn = 107,p=998244353;
ll n,m,k,v[maxn],sa[maxn],ans;
static inline ll popcount(int128 n){
    ll ans=0;
    while(n){
        ans++;
        n-=(n&-n);
    }
    return ans;
}
static inline void getans(int128 add){
    // printf("getans %lld popcount=%lld\n",add,popcount(add));
    if(popcount(add)>k){
        // printf("popcount >k\n");
        return;
    }
    ll nans=1;
    for(ll i=1;i<=n;i++){
        nans=nans*v[sa[i]]%p;
    }
    ans=(ans+nans)%p;
}

static inline void dfs(ll idx,int128 add){
    // printf("dfs %lld %lld\n",idx, add);
    if(idx>n){
        getans(add);
        return;
    }
    for(ll i=0;i<=m;i++){
        sa[idx]=i;
        dfs(idx+1,add+(1ll<<i));
    }
}

int main(){
    std::iostream::sync_with_stdio(false);
    std::cin.tie(nullptr);

    std::cin>>n>>m>>k;
    for(ll i=0;i<=m;i++){
        std::cin>>v[i];
    }
    dfs(1, 0);
    std::cout<<ans<<"\n";
}